package com.malk.diwei.service.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.malk.diwei.entity.*;
import com.malk.diwei.entity.Process;
import com.malk.diwei.mapper.*;
import com.malk.diwei.service.ProcessService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.malk.server.aliwork.YDConf;
import com.malk.server.aliwork.YDParam;
import com.malk.server.common.McR;
import com.malk.service.aliwork.YDClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/**
*
* 服务实现类
*
*
* @author WZY
* @since 2025-03-27
*/
@Service
public class ProcessServiceImpl extends ServiceImpl implements ProcessService {
@Autowired
private ProcessMapper processMapper;
@Autowired
private DepartmentMapper departmentMapper;
@Autowired
private EmployeeMapper employeeMapper;
@Autowired
private ProcessMaterialMapper processMaterialMapper;
@Autowired
private YDClient ydClient;
@Autowired
private BomMapper bomMapper;
@Autowired
private GoodsMapper goodsMapper;
@Autowired
private ColorMapper colorMapper;
@Autowired
private UnitMapper unitMapper;
@Autowired
private GoodsPartsMapper goodsPartsMapper;
@Autowired
private WorkProcStepMapper workProcStepMapper;
@Autowired
private ClientMapper clientMapper;
@Autowired
private ProcessItemMapper processItemMapper;
@Autowired
private ProcessONDetailMapper processONDetailMapper;
private static final Map PROC_STEP_TYPE = new HashMap<>();
static {
PROC_STEP_TYPE.put(1, "厂内工序");
PROC_STEP_TYPE.put(3, "裁剪工序");
PROC_STEP_TYPE.put(4, "工艺委外工序");
}
@Override
public McR syncProcess() {
LambdaQueryWrapper processLambdaQueryWrapper = new LambdaQueryWrapper<>();
processLambdaQueryWrapper.and(wrapper -> wrapper.ge(Process::getProcessUpdateDatetime, DateUtil.beginOfDay(DateUtil.yesterday()))
.or()
.ge(Process::getProcessCreateDatetime,DateUtil.beginOfDay(DateUtil.yesterday())))
.eq(Process::getEntityObjKey,"ProductionSW")
.eq(Process::getProcessStatus,2);
/*processLambdaQueryWrapper.and(wrapper -> wrapper.ge(Process::getProcessUpdateDatetime, "2025-04-10 00:00:00")
.or()
.ge(Process::getProcessCreateDatetime,"2025-04-10 00:00:00"))
.eq(Process::getEntityObjKey,"ProductionSW")
.eq(Process::getProcessStatus,2);*/
List processeList= processMapper.selectList(processLambdaQueryWrapper);
for (Process process : processeList) {
Map formData = new HashMap();
formData.put("dateField_m8pi90ec", process.getProcessDate().getTime());//单据日期
formData.put("textField_m8pi90ei",process.getProcessCode());//单据编号
LambdaQueryWrapper bomLambdaQueryWrapper = new LambdaQueryWrapper<>();
bomLambdaQueryWrapper.eq(Bom::getBomID, process.getProcessBomID());
Bom bom = bomMapper.selectOne(bomLambdaQueryWrapper);
formData.put("textField_m8pi90ej",bom.getBomCode());//BOM
formData.put("dateField_m8pi90eo",process.getProcessDeliveryDate().getTime());//交货日期
if (process.getProcessDeptID() != null && process.getProcessDeptID() != 0){
LambdaQueryWrapper departmentLambdaQueryWrapper = new LambdaQueryWrapper<>();
departmentLambdaQueryWrapper.eq(Department::getDeptID, process.getProcessDeptID());
Department department = departmentMapper.selectOne(departmentLambdaQueryWrapper);
formData.put("textField_m8pi90eq",department.getDeptName());//部门
}
formData.put("textField_m8pi90es","总部");//组织机构
formData.put("textField_m8pi90ex",process.getProcessSOClientName());//订单客户
formData.put("textField_m8pi90ey",process.getProcessSOClientOrderCode());//客户订单号
formData.put("textField_m8pi90ez",process.getProcessSOGoodsCode());//订单款号
if (process.getProcessQCMerchandiserID() != null && process.getProcessQCMerchandiserID() != 0){
LambdaQueryWrapper employeeLambdaQueryWrapper = new LambdaQueryWrapper<>();
employeeLambdaQueryWrapper.eq(Employee::getEmpID, process.getProcessQCMerchandiserID());
Employee employee = employeeMapper.selectOne(employeeLambdaQueryWrapper);
formData.put("textField_m8pi90f4",employee.getEmpName());//QC跟单
}
formData.put("textareaField_m8pi90f6",process.getProcessDescription());//备注
//加工产品
List