优化餐券对接

This commit is contained in:
andy 2026-08-22 09:05:18 +08:00
parent fc4b5395fd
commit 02fe04e6a2
5 changed files with 77 additions and 208 deletions

View File

@ -587,208 +587,64 @@ public class TestController {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
String str = "GW000001,总经理,00101,总经办;" + String str = "郝卫明,8000;" +
"GW000002,经营副总,00101,总经办;" + "郝亮,1500;" +
"GW000003,生产副总,00101,总经办;" + "柳晓龙,1300;" +
"GW000004,机械总工程师,013,研究院;" + "王旭,800;" +
"GW000005,常务副总,00101,总经办;" + "张克龙,1500;" +
"GW000006,电气总工程师,013,研究院;" + "贾会涛,500;" +
"GW000007,销售总监,00202,工业事业部;" + "李凯伟,2500;" +
"GW000008,营销专员,00202,工业事业部;" + "石泽明,500;" +
"GW000009,销售总监,00201,舞台事业部;" + "马明广,500;" +
"GW000010,区域经理,00202,工业事业部;" + "宋金娜,800;" +
"GW000011,销售内勤,00202,工业事业部;" + "吴海庆,318;" +
"GW000012,生管部部长,005,生产管理部;" + "冯翠莎,500;" +
"GW000013,调度员,007,装配车间;" + "赵科飞,1000;" +
"GW000015,装一工段长,007,装配车间;" + "李进江,431;" +
"GW000016,装一组长,007,装配车间;" + "李佳铭,1000;" +
"GW000017,装一装配工,007,装配车间;" + "耿利刚,100;" +
"GW000018,装二装配工,007,装配车间;" + "张雨轩,400;" +
"GW000030,工艺工程师,011,工艺所;" + "李永文,1000;" +
"GW000031,仓储部长,009,仓储物流部;" + "代程翼,900;" +
"GW000032,库管员,009,仓储物流部;" + "李晓亮,800;" +
"GW000033,设计部部长,013,研究院;" + "李兴酉,800;" +
"GW000034,机械设计工程师,013,研究院;" + "王晓凡,800;" +
"GW000036,工艺技术员,011,工艺所;" + "董献召,354;" +
"GW000039,质量部部长,012,质量管理部;" + "王晓军,300;" +
"GW000040,质检员,012,质量管理部;" + "苏冰,2000;" +
"GW000041,财务部部长,003,财务部;" + "吴建彬,500;" +
"GW000042,出纳,003,财务部;" + "王怀志,1000;" +
"GW000044,采购部部长,004,采购部;" + "张广适,400;" +
"GW000045,采购员,004,采购部;" + "赵兰争,800;" +
"GW000047,C++工程师,013,研究院;" + "齐乐芳,500;" +
"GW000058,质量工程师(QE),012,质量管理部;" + "魏佳蕊,500;" +
"GW000063,信息中心专员,00104,信息化办公室;" + "范会雨,424;" +
"GW000064,行政办主任,00102,行政办;" + "康坤兰,500;" +
"GW000065,行政专员,00102,行政办;" + "牛立革,600;" +
"GW000066,信息中心主任,00104,信息化办公室;" + "付佳兴,265;" +
"GW000067,人资办主任,00103,人资办;" + "游梦浩,277;" +
"GW000068,人资专员,00103,人资办;" + "魏辰强,500;" +
"GW000069,员工关系专员,00103,人资办;" + "吴凯亮,400;" +
"GW000070,总经办主任,00101,总经办;" + "董亚军,500;" +
"GW000071,总经办专员,00101,总经办;" + "赵雄飞,1000;" +
"GW000072,成本会计,003,财务部;" + "宁世汉,351;" +
"GW000073,总账会计,003,财务部;" + "张会杰,500;" +
"GW000074,往来会计,003,财务部;" + "王光磊,207;" +
"GW000075,库管组长,009,仓储物流部;" + "梅丙立,189;" +
"GW000076,电控部长,013,研究院;" + "李泽宇,200;" +
"GW000077,电气工程师,013,研究院;" + "印子鹏,100;" +
"GW000078,点收组长,012,质量管理部;" + "李雷升,100;" +
"GW000079,点收员,012,质量管理部;" + "杨策,305;" +
"GW000080,调式工程师,013,研究院;" + "赵芊慧,200;" +
"GW000081,前端工程师,013,研究院;" + "朱海斌,100;" +
"GW000082,JAVA工程师,013,研究院;" + "李彦辉,100;" +
"GW000083,嵌入式工程师,013,研究院;" + "李增全,200;" +
"GW000084,装二工段长,007,装配车间;" + "靳立节,100";
"GW000085,装二组长,007,装配车间;" +
"GW000086,电钳工段长,007,装配车间;" +
"GW000087,售后副段长,015,售后服务科;" +
"GW000088,电钳工,007,装配车间;" +
"GW000089,调度员,006,机加车间;" +
"GW000090,统计员,006,机加车间;" +
"GW000091,卧加组长,006,机加车间;" +
"GW000092,铆焊副工段长,006,机加车间;" +
"GW000093,走心机操作工,006,机加车间;" +
"GW000094,下料组组长,006,机加车间;" +
"GW000095,非标焊接工段长,018,铆焊车间;" +
"GW000096,攻丝操作员,006,机加车间;" +
"GW000097,机一车间主任,006,机加车间;" +
"GW000098,机一操作员,006,机加车间;" +
"GW000099,机二车间主任,006,机加车间;" +
"GW000100,机二副工段长,006,机加车间;" +
"GW000101,卧加操作员,006,机加车间;" +
"GW000102,机三车间主任,006,机加车间;" +
"GW000103,机三副工段长,006,机加车间;" +
"GW000104,龙门组组长,006,机加车间;" +
"GW000105,立加850组长,006,机加车间;" +
"GW000106,立加850操作员,006,机加车间;" +
"GW000107,保安,00102,行政办;" +
"GW000108,保洁,00102,行政办;" +
"GW000109,外贸业务经理,00202,工业事业部;" +
"GW000110,设备科科长,016,设备科;" +
"GW000111,设备维修工,016,设备科;" +
"GW000112,设备工程师,016,设备科;" +
"GW000113,生管员,005,生产管理部;" +
"GW000114,工艺部部长,011,工艺所;" +
"GW000116,技术员1,013,研究院;" +
"GW000117,焊工,006,机加车间;" +
"GW000118,铆工,018,铆焊车间;" +
"GW000119,助理工程师,013,研究院;" +
"GW000120,技术员2,013,研究院;" +
"GW000121,项目专员,005,生产管理部;" +
"GW000122,售后服务部部长,015,售后服务科;" +
"GW000123,售后工程师,015,售后服务科;" +
"GW000124,算法工程师,013,研究院;" +
"GW000125,PACK研发部主管,013,研究院;" +
"GW000126,BMS应用工程师,013,研究院;" +
"GW000127,仓储部副部长,009,仓储物流部;" +
"GW000128,机械研发部部长,013,研究院;" +
"GW000129,测试员,013,研究院;" +
"GW000130,生产副总助理,00101,总经办;" +
"GW000131,销售内勤,002004,大客户事业部;" +
"GW000133,销售内勤,00201,舞台事业部;" +
"GW000134,区域经理,00201,舞台事业部;" +
"GW000135,营销专员,00201,舞台事业部;" +
"GW000137,外贸员,00202,工业事业部;" +
"GW000139,生管部副部长,005,生产管理部;" +
"GW000140,下料操作工,018,铆焊车间;" +
"GW000141,铆焊工段长,018,铆焊车间;" +
"GW000142,研发一所所长,013,研究院;" +
"GW000143,工步工艺员,006,机加车间;" +
"GW000144,数车工段长,006,机加车间;" +
"GW000145,打磨工,018,铆焊车间;" +
"GW000146,工艺技术员,013,研究院;" +
"GW000147,内勤,005,生产管理部;" +
"GW000148,机械手操作工,018,铆焊车间;" +
"GW000149,激光切操作工,018,铆焊车间;" +
"GW000150,转序员,018,铆焊车间;" +
"GW000151,综合技术员,018,铆焊车间;" +
"GW000152,点收员,004,采购部;" +
"GW000153,机二文员,006,机加车间;" +
"GW000154,外协员,005,生产管理部;" +
"GW000155,机械工程师,013,研究院;" +
"GW000156,机械研发专员,013,研究院;" +
"GW000157,激光淬火操作工,018,铆焊车间;" +
"GW000158,转序员,006,机加车间;" +
"GW000159,电钳采购,023,电钳车间;" +
"GW000160,装配车间主任,007,装配车间;" +
"GW000161,铆焊车间主任,018,铆焊车间;" +
"GW000162,电钳车间主任,023,电钳车间;" +
"GW000163,计划员,005,生产管理部;" +
"GW000164,机二编程员,006,机加车间;" +
"GW000165,攻丝操作员,007,装配车间;" +
"GW000166,电钳工,023,电钳车间;" +
"GW000167,校形操作工,018,铆焊车间;" +
"GW000168,激光切板组长,018,铆焊车间;" +
"GW000169,火焰操作工,018,铆焊车间;" +
"GW000170,火焰、切管组组长,018,铆焊车间;" +
"GW000171,转运组长,018,铆焊车间;" +
"GW000172,下料工段长,018,铆焊车间;" +
"GW000173,激光焊工,018,铆焊车间;" +
"GW000174,焊工,018,铆焊车间;" +
"GW000175,精密件组长,018,铆焊车间;" +
"GW000176,坡口机操作工,018,铆焊车间;" +
"GW000177,自动化组长,018,铆焊车间;" +
"GW000178,行程检测,023,电钳车间;" +
"GW000179,研发二所所长,013,研究院;" +
"GW000180,铆工组长,018,铆焊车间;" +
"GW000181,研发三所所长,013,研究院;" +
"GW000182,电气技术员,013,研究院;" +
"GW000183,库管员,018,铆焊车间;" +
"GW000184,自动化焊接工段长,018,铆焊车间;" +
"GW000185,统计员,018,铆焊车间;" +
"GW000186,研发四所所长,013,研究院;" +
"GW000187,研究院院长,013,研究院;" +
"GW000188,研发六所所长,013,研究院;" +
"GW000189,调试测试工程师,013,研究院;" +
"GW000190,研发七所所长,013,研究院;" +
"GW000191,研究院副院长,013,研究院;" +
"GW000192,人事专员,00103,人资办;" +
"GW000193,信息化主任,00104,信息化办公室;" +
"GW000194,信息化专员,00104,信息化办公室;" +
"GW000195,售后服务科长,015,售后服务科;" +
"GW000196,助理工程师,00202,工业事业部;" +
"GW000197,机械工程师,00202,工业事业部;" +
"GW000198,外贸员,00201,舞台事业部;" +
"GW000199,应收会计,003,财务部;" +
"GW000200,应付会计,003,财务部;" +
"GW000201,机二编程组长,006,机加车间;" +
"GW000202,调度员,005,生产管理部;" +
"GW000203,生产计划员,005,生产管理部;" +
"GW000204,点收员,009,仓储物流部;" +
"GW000205,仓储物流部长,009,仓储物流部;" +
"GW000206,仓储物流副部长,009,仓储物流部;" +
"GW000207,龙门操作员,006,机加车间;" +
"GW000208,制程检验员,012,质量管理部;" +
"GW000209,成品检验员,012,质量管理部;" +
"GW000210,质量管理部长,012,质量管理部;" +
"GW000211,三坐标检验员,012,质量管理部;" +
"GW000212,质量体系工程师,012,质量管理部;" +
"GW000213,普车工段长,006,机加车间;" +
"GW000214,普机操作工,006,机加车间;" +
"GW000215,台钻操作工,006,机加车间;" +
"GW000216,锯床,006,机加车间;" +
"GW000217,磨床操作工,006,机加车间;" +
"GW000218,机三编程员,006,机加车间;" +
"GW000219,线切割组长,006,机加车间;" +
"GW000220,线切割操作工,006,机加车间;" +
"GW000221,数车操作工,006,机加车间;" +
"GW000222,磨齿机操作工,006,机加车间;" +
"GW000223,激光淬火操作工,006,机加车间;" +
"GW000224,编程员,006,机加车间;" +
"GW000225,工段长,006,机加车间;" +
"GW000226,链条组长,007,装配车间;" +
"GW000227,箱体组长,007,装配车间";
String[] aa = str.split(";"); String[] aa = str.split(";");
int sort = 1;
List<String> deptNames = new ArrayList<>();
for (int i = 0; i < aa.length; i++) { for (int i = 0; i < aa.length; i++) {
String a = aa[i].trim(); String a = aa[i].trim();
String[] ss = a.split(","); String[] ss = a.split(",");
if(!deptNames.contains(ss[3])) { System.out.println("CALL `修改其他补助`('"+ss[0]+"', "+ss[1]+");");
System.out.println("update sys_dept set dept_code='"+ss[2]+"' where dept_name = '"+ss[3]+"';");
deptNames.add(ss[3]);
}
// System.out.println("INSERT INTO `evo_cw_dev`.`sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) " + // System.out.println("INSERT INTO `evo_cw_dev`.`sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) " +
// "VALUES ( "+(sort++)+", '"+ss[1]+"', '"+ss[0]+"_"+ss[2]+"', 'job_info', NULL, 'default', 'N', '0', 'admin', now(), '', NULL, NULL);"); // "VALUES ( "+(sort++)+", '"+ss[1]+"', '"+ss[0]+"_"+ss[2]+"', 'job_info', NULL, 'default', 'N', '0', 'admin', now(), '', NULL, NULL);");

View File

@ -12,6 +12,8 @@ import com.evo.common.utils.StringUtils;
import com.evo.ding.DingUtils; import com.evo.ding.DingUtils;
import com.evo.ding.processor.instance.InstanceChangeExchangeProcessor; import com.evo.ding.processor.instance.InstanceChangeExchangeProcessor;
import com.evo.personnelMatters.domain.RzMealExpenses; import com.evo.personnelMatters.domain.RzMealExpenses;
import com.evo.personnelMatters.domain.RzMealExpensesDetail;
import com.evo.personnelMatters.service.RzMealExpensesDetailService;
import com.evo.personnelMatters.service.RzMealExpensesService; import com.evo.personnelMatters.service.RzMealExpensesService;
import com.evo.system.mapper.SysDictDataMapper; import com.evo.system.mapper.SysDictDataMapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -38,6 +40,8 @@ public class InstanceChangeReceptionExchangeProcessor implements InstanceChangeE
private SysDictDataMapper sysDictDataMapper; //数据字典 private SysDictDataMapper sysDictDataMapper; //数据字典
@Resource @Resource
private RzMealExpensesService rzMealExpensesService; private RzMealExpensesService rzMealExpensesService;
@Resource
RzMealExpensesDetailService rzMealExpensesDetailService;
@Override @Override
public boolean accept(String processCode) { public boolean accept(String processCode) {
return InstanceChangeExchangeProcessor.PROCESS_CODE_RECEPTION_CARD.equals(processCode); return InstanceChangeExchangeProcessor.PROCESS_CODE_RECEPTION_CARD.equals(processCode);
@ -65,13 +69,17 @@ public class InstanceChangeReceptionExchangeProcessor implements InstanceChangeE
BigDecimal unitPrice = DataUtils.DEFAULT_VALUE; BigDecimal unitPrice = DataUtils.DEFAULT_VALUE;
//查询消费情况 //查询消费情况
Map<Long,String> dicMap = sysDictDataMapper.selectDictDataByType(Constants.SYS_RESTAUTANT).stream().collect(Collectors.toMap(SysDictData::getDictCode, SysDictData::getDictValue)); Map<Long,String> dicMap = sysDictDataMapper.selectDictDataByType(Constants.SYS_RESTAUTANT).stream().collect(Collectors.toMap(SysDictData::getDictCode, SysDictData::getDictValue));
RzMealExpensesDetail detail = new RzMealExpensesDetail();
detail.setType(3);
if("早餐".equals(diningType)){ if("早餐".equals(diningType)){
unitPrice = new BigDecimal(dicMap.get(Constants.zc_code)); unitPrice = new BigDecimal(dicMap.get(Constants.zc_code));
detail.setMealVoucherType("早餐");
}else if ("午餐".equals(diningType)){ }else if ("午餐".equals(diningType)){
unitPrice = new BigDecimal(dicMap.get(Constants.wc_code)); unitPrice = new BigDecimal(dicMap.get(Constants.wc_code));
detail.setMealVoucherType("午餐");
} else if ("晚餐".equals(diningType)) { } else if ("晚餐".equals(diningType)) {
unitPrice = new BigDecimal(dicMap.get(Constants.wcc_code)); unitPrice = new BigDecimal(dicMap.get(Constants.wcc_code));
detail.setMealVoucherType("晚餐");
} }
BigDecimal totalAmount = unitPrice.multiply(new BigDecimal(diningNum)); BigDecimal totalAmount = unitPrice.multiply(new BigDecimal(diningNum));
//预计月份 //预计月份
@ -82,16 +90,23 @@ public class InstanceChangeReceptionExchangeProcessor implements InstanceChangeE
RzMealExpenses rzMealExpenses = new RzMealExpenses(); RzMealExpenses rzMealExpenses = new RzMealExpenses();
if(Collections.isNotEmpty(list)){ if(Collections.isNotEmpty(list)){
rzMealExpenses = list.get(0); rzMealExpenses = list.get(0);
rzMealExpenses.setHospitalityFee(new BigDecimal(DataUtils.findDefaultValue(rzMealExpenses.getHospitalityFee(), 0d)).add(totalAmount).doubleValue()); // rzMealExpenses.setHospitalityFee(totalAmount.add(new BigDecimal(DataUtils.findDefaultValue(rzMealExpenses.getHospitalityFee(), 0d))).doubleValue());
rzMealExpensesService.updateRzMealExpenses(rzMealExpenses); // rzMealExpensesService.updateById(rzMealExpenses);
}else { }else {
rzMealExpenses = new RzMealExpenses(); rzMealExpenses = new RzMealExpenses();
rzMealExpenses.setYearMonthTime(month.substring(0, 7)); rzMealExpenses.setYearMonthTime(month.substring(0, 7));
rzMealExpenses.setWaterUnitPrice(ParamUtils.getWaterUnitPrice()); rzMealExpenses.setWaterUnitPrice(ParamUtils.getWaterUnitPrice());
rzMealExpenses.setElectricityUnitPrice(ParamUtils.getElectricityUnitPrice()); rzMealExpenses.setElectricityUnitPrice(ParamUtils.getElectricityUnitPrice());
rzMealExpenses.setHospitalityFee(totalAmount.doubleValue()); // rzMealExpenses.setHospitalityFee(totalAmount.doubleValue());
rzMealExpensesService.save(rzMealExpenses); rzMealExpensesService.save(rzMealExpenses);
} }
detail.setExpensesId(rzMealExpenses.getId());
detail.setNum(Integer.valueOf(diningNum));
detail.setUnitPrice(unitPrice.doubleValue());
detail.setTotalPrice(totalAmount.doubleValue());
detail.setCompanyName("YT"); //默认为河北伊特
rzMealExpensesDetailService.saveRzMealExpensesDetail(detail);
} catch (Exception e) { } catch (Exception e) {
log.error("解析招待审批出现错误:错误信息为:{}", e.getMessage()); log.error("解析招待审批出现错误:错误信息为:{}", e.getMessage());
e.printStackTrace(); e.printStackTrace();

View File

@ -53,7 +53,7 @@ public interface RzSalaryDetailMapper extends BaseMapper<RzSalaryDetail>
* @param staffId 工资详情主键 * @param staffId 工资详情主键
* @return 工资详情 * @return 工资详情
*/ */
public RzSalaryDetail selectRzSalaryDetailByStaffId(Long staffId); public RzSalaryDetail selectRzSalaryDetailByStaffId(@Param("staffId") Long staffId, @Param("month")Date month);
/** /**
* 根据月份查询工资详情列表 * 根据月份查询工资详情列表

View File

@ -227,13 +227,11 @@ public interface SalaryCalculationStrategyExchangeProcessor {
default void calculation(SysStaff sysStaff, SysStaffDetail detail, RzSalaryDetail rzSalaryDetail, List<Map<String,Object>> salaryInfoMapList){ default void calculation(SysStaff sysStaff, SysStaffDetail detail, RzSalaryDetail rzSalaryDetail, List<Map<String,Object>> salaryInfoMapList){
RzSalaryDetailMapper rzSalaryDetailMapper = SpringUtils.getBean(RzSalaryDetailMapper.class); RzSalaryDetailMapper rzSalaryDetailMapper = SpringUtils.getBean(RzSalaryDetailMapper.class);
SysStaffDetailMapper sysStaffDetailMapper = SpringUtils.getBean(SysStaffDetailMapper.class);
//获取统计月份 //获取统计月份
int curr_month = DateUtils.getMonth(rzSalaryDetail.getMonth()); int curr_month = DateUtils.getMonth(rzSalaryDetail.getMonth());
//获取工资统计月份,查询上个月的纳税公司 得到年度免征额 //获取工资统计月份,查询上个月的纳税公司 得到年度免征额
RzSalaryDetail old_rzSalary = rzSalaryDetailMapper.selectRzSalaryDetailByStaffId(rzSalaryDetail.getStaffId()); RzSalaryDetail old_rzSalary = rzSalaryDetailMapper.selectRzSalaryDetailByStaffId(rzSalaryDetail.getStaffId(),DateUtils.addMonths(rzSalaryDetail.getMonth(), -1));
BigDecimal annualExemptionAmount = new BigDecimal("5000.00"); BigDecimal annualExemptionAmount = new BigDecimal("5000.00");
//判断员工为 新入职公司纳税主题改变同一主题超一年的同一主题不超一年但跨年的 //判断员工为 新入职公司纳税主题改变同一主题超一年的同一主题不超一年但跨年的
if(StringUtils.isNull(old_rzSalary) || !old_rzSalary.getWbFlag().equals(sysStaff.getCompanyName()) || curr_month == 12){ if(StringUtils.isNull(old_rzSalary) || !old_rzSalary.getWbFlag().equals(sysStaff.getCompanyName()) || curr_month == 12){

View File

@ -250,9 +250,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where id = #{id} where id = #{id}
</update> </update>
<!-- 根据员工ID查询员工上一次的交保险公司 --> <!-- 根据员工ID查询员工上一次的交保险公司 -->
<select id="selectRzSalaryDetailByStaffId" parameterType="Long" resultMap="RzSalaryDetailResult"> <select id="selectRzSalaryDetailByStaffId" resultMap="RzSalaryDetailResult">
<include refid="selectRzSalaryDetailVo"/> <include refid="selectRzSalaryDetailVo"/>
where del_flag = '0' and staff_id = #{staffId} order by month desc limit 1 where del_flag = '0' and staff_id = #{staffId} and DATE_FORMAT( month, '%Y%m' ) = DATE_FORMAT( #{month} , '%Y%m' ) order by month desc limit 1
</select> </select>
<!-- 根据月份查询员工统计月的工资 --> <!-- 根据月份查询员工统计月的工资 -->
<select id="selectRzSalaryDetailByMonth" resultMap="RzSalaryDetailResult"> <select id="selectRzSalaryDetailByMonth" resultMap="RzSalaryDetailResult">